﻿//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Runtime.Serialization;

//namespace BlueLotus7.Contract
//{
//    [Serializable]
//    [DataContract]
//    [KnownType(typeof(BaseAccount))]
//    public class User : BaseAccount
//    {
//        #region Fields

//        [DataMember]
//        string securitySN;

//        [DataMember]
//        DateTime? securitySNStamp;

//        [DataMember]
//        string activeSN;

//        #endregion

//        #region Property

//        public string SecuritySN
//        {
//            get { return securitySN; }
//            set { securitySN = value; }
//        }

//        public DateTime? SecuritySNStamp
//        {
//            get { return securitySNStamp; }
//            set { securitySNStamp = value; }
//        }

//        public string ActiveSN
//        {
//            get { return activeSN; }
//            set { activeSN = value; }
//        }

//        public bool Actived
//        {
//            get
//            {
//                return activeSN == null;
//            }
//        }

//        #endregion

//        public User(Guid userKey, string loginId, string password, DateTime insertedStamp, DateTime lastUpdatedStamp)
//            : base(userKey, loginId, password, insertedStamp, lastUpdatedStamp)
//        {
//        }

//        public User(Guid personKey, string loginId, string activeSerialNumber)
//            : base(loginId)
//        {
//            this.key = personKey;
//            this.activeSN = activeSerialNumber;
//        }

//        #region IValidate

//        public override void Validate()
//        {
//            base.Validate();

//            if (Actived)
//            {
//                //Actived
//                for (int i = 0; i < securityQuestions.Length; i++)
//                {
//                    if (securityQuestions[i] == null || securityQuestions[i].Length < Constant.SystemDefinition.SecurityQuestionMinLength || securityQuestions[i].Length > Constant.SystemDefinition.SecurityQuestionMaxLength)
//                    {
//                        throw new InvalidObjectException("securityQuestion" + (i + 1).ToString());
//                    }
//                }
//                for (int i = 0; i < securityAnswers.Length; i++)
//                {
//                    if (securityAnswers[i] == null || securityAnswers[i].Length < Constant.SystemDefinition.SecurityAnswerMinLength || securityAnswers[i].Length > Constant.SystemDefinition.SecurityAnswerMaxLength)
//                    {
//                        throw new InvalidObjectException("securityAnswer" + (i + 1).ToString());
//                    }
//                }

//                if (!Validator.IsId(loginId, Constant.SystemDefinition.LoginIdMinLength, Constant.SystemDefinition.LoginIdMaxLength))
//                {
//                    throw new InvalidObjectException("loginId");
//                }
//                else if (!Validator.IsCharPinCode(password, 32, 32))
//                {
//                    throw new InvalidObjectException("password");
//                }
//            }
//            else
//            {
//                if (!Validator.IsCharPinCode(password, Constant.SystemDefinition.ActiveSNBitCount, Constant.SystemDefinition.ActiveSNBitCount))
//                {
//                    throw new InvalidObjectException("activeSN");
//                }
//            }

//            if (securitySN != null)
//            {
//                if (!Validator.IsCharPinCode(password, Constant.SystemDefinition.SecuritySNBitCount, Constant.SystemDefinition.SecuritySNBitCount))
//                {
//                    throw new InvalidObjectException("securitySN");
//                }
//                if (securitySNStamp == null)
//                {
//                    throw new InvalidObjectException("securitySNStamp");
//                }
//            }

//        }

//        #endregion
//    }
//}
